#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>       // 包含内置函数 如 std::greater

/**
 * C++ 排序
 *  lambda表达式
 *  内置函数
 * @author: caoshi
 * @date: 2021/4/11 21:34
 */
int main() {
    std::vector<int> values = {3, 4, 2, 1, 6, 5};
    // 默认从小到大排序
//    std::sort(values.begin(), values.end());

    // 第三个参数可以传函数
    // 内置函数 greater 从大到小排序
    // std::sort(values.begin(), values.end(), std::greater<int>());

    // 使用lambda 表达式
    std::sort(values.begin(), values.end(), [](int a, int b) {
//        return a < b;     升序      如果 a < b 那么 a < b 为true, 返回true的意思是a要排在前面
//        return a > b;

    /**
     *  需求: 数字2 排在最后, 其它数字按升序排列
     */

        if (a == 2)
            return false;

        if (b == 2)
            return true;

        return a < b;
    });

    for (int value : values) {
        std::cout << value << std::endl;
    }

//    std::cout << "Hello, World!" << std::endl;
    return 0;
}
